package com.gz.mylife.util;


public class EncryptionUtils {
	/**
	 * 加密算法
	 * @param str
	 * @return
	 * 6个字节随机码
			数据0  数据1  数据2  数据 3  数据  4  数据  5  
			   6 	8      0      7       9         5

			加密步骤  1，调换顺序
			交换后	数据0  数据1  数据2  数据 3  数据  4   数据  5 

			交换前	数据3  数据1   数据5   数据 0   数据  4   数据  2 
			   	7	8        5       6         9        0 

			2,按交换后数据加
		        数据0=（数据3+数据5）%16;
			   数据1=（数据2+数据1）%16;
			   数据2=（数据0+数据4）%16;
			   数据3=（数据0+数据1）%16;
			   数据4=（数据5+数据4）%16;
			   数据5=（数据3+数据0）%16;
	 */
	public static String encryptionString (String str){
		String str0=getchartstring(0, str);
		String str1=getchartstring(1, str);
		String str2=getchartstring(2, str);
		String str3=getchartstring(3, str);
		String str4=getchartstring(4, str);
		String str5=getchartstring(5, str);
		//开始进行转换 3.1.5.0.4.2
		String convertstr=str3+str1+str5+str0+str4+str2;
		System.out.println("转换后＝"+convertstr);

		String conString0=getchartstring(0, convertstr);
		String conString1=getchartstring(1, convertstr);
		String conString2=getchartstring(2, convertstr);
		String conString3=getchartstring(3, convertstr);
		String conString4=getchartstring(4, convertstr);
		String conString5=getchartstring(5, convertstr);


		int conint0=Integer.parseInt(sixteenstringtotwo(conString0));
		int conint1=Integer.parseInt(sixteenstringtotwo(conString1));
		int conint2=Integer.parseInt(sixteenstringtotwo(conString2));
		int conint3=Integer.parseInt(sixteenstringtotwo(conString3));
		int conint4=Integer.parseInt(sixteenstringtotwo(conString4));
		int conint5=Integer.parseInt(sixteenstringtotwo(conString5));

		conint0=(conint3+conint5)%16;
		conint1=(conint2+conint1)%16;
		conint2=(conint0+conint4)%16;
		conint3=(conint0+conint1)%16;
		conint4=(conint5+conint4)%16;
		conint5=(conint3+conint0)%16;

		return tosixteenstring(conint0)+tosixteenstring(conint1)+tosixteenstring(conint2)+
				tosixteenstring(conint3)+tosixteenstring(conint4)+tosixteenstring(conint5);
	}

	public static String getchartstring(int index ,String str){
		return str.charAt(index)+"";
	}

	public static String sixteenstringtotwo(String str){
		if("A".equals(str)){
			return "10";
		}else if("B".equals(str)){
			return "11";
		}else if("C".equals(str)){
			return "12";
		}else if("D".equals(str)){
			return "13";
		}else if("E".equals(str)){
			return "14";
		}else if("F".equals(str)){
			return "15";
		}else {
			return str;
		}
	}

	public static String tosixteenstring(int index){
		if(index==10){
			return "A";
		}else if(index==11){
			return "B";
		}
		else if(index==12){
			return "C";
		}
		else if(index==13){
			return "D";
		}
		else if(index==14){
			return "E";
		}
		else if(index==15){
			return "F";
		}else {
			return index+"";
		}

	}
}
